UPLOAD START Ask for drop carrier after upload Ask for check files as soon as file is uploaded or after they are all uploaded Ask to double check which conf files are to be placed in for each file Local Login ? YES - Display File Requester Multiple times until sysop cancels it So that files from more than one directory can be selected Copy files to correct location for processing N_ND->Plapendir or sommat NO - Select File Transfer protocol using SELECT_PROTOCOL door call TRANSFER ("WAREZ_FILE", PROTOCOLNUM,IMMEDIATE CHECK,) Note: "warez_file" keyword tells the transfer that the file is to go into the filelists for a conference and to call approprate doors Call FILE_CHECK (ALL) Door UPLOAD END TRANSFER START (WAREZ_FILE ?, PROTOCOLNUM, IMMEDIATE_CHECK ?, CONF_CHECK ?) Call protocol door E.G. XU P=xprzmodem.library U=HBBS:Nodes/Node1/Playpen TRANSFER END PROTOCOL DOOR (OPTIONS,[U=UPLOAD_PATH... ]/[D=DOWNLOAD FILENAME...]) Uploading ? get filename of file user wants to upload check current conference's file paths for file with same name check playpen for file of same name file found in a directory ? skip uploading file else transfer file using built-in method end else Downloading so.. transfer file using built-in method end PROTOCOL DOOR END FILE_CHECK START (ALL ?,FILE_NAME) * this door checks and deals with all files that are uploaded into a filelist if ALL? then begin build list of files in the node's playpen into a linked list add call the next block of commands until you get to the end of the list, not forgetting to fill FILE_NAME with name of current file in the linked list. end else call block just once.. begin call CHECK_CORRUPT (file_name) if file is corrupt then set "HOLD" else begin call EXTRACT_DIZ (file_name) to extract FILE_ID.DIZ to N_ND->workdir+file_name+".diz" call MODIFY_DIZ (file_name) for other cool doors to mess about with your nice diz call ASK_UL (file_name) checks to see if user *really* wanted this file uploaded, and can also prompt to see if it's supposed to be for the sysop ONLY if NOT incorrect and NOT sysop private then begin call ASK_CONF if user said [Y]es to option before upload begins returns confnum that file is to be placed in call DUPE_CHECK (confnum) if file is duplicate then set "hold" variable end call ADD_DIZ (private ?,hold ?,confnum) to add the description to the filelist. call ADD_CREDS (filename,confnum) to add credits & time to user's account (this is cool way of adding creds!, as the door knows which conf the files goes in you can get the door to say apply creds for sysop special offers like: all Amiga warez on the weekend get 3x creds! as the add_creds door can tell if the file goes in the amiga conf and can easily work out dates and so on... Also you can do filename matching in the request conf so you can get the door to send a mail message to the user who requested the file you've just uploaded!!! Wow! I even amaze myself with the coolness of this system I've designed sometimes!) end (corrupt) call MOVE_FILE (filename,confnum,hold ?) to move the file to the correct bbs path if all ok then return OK and the CONFNUM of conference the file was placed in end FILE_CHECK END MAIL_WRITE START (TO) if (TO) is not specified then ask for name to mail to check the TO string for validity You *CAN* have a to string like Hydr*,Sysop,Cruise so you must check the entire line for valid usernames You must also check that the user you are writing mail to has access to the conference you are writing mail in. note: add support for groups, eg, LSD in the TO string writes the message to all the members of LSD! :-) ask for subject if subject is NOT blank BEGIN get message line by line, a blank line should bring up the options. menu should allow the following (according to access rights) Attach files Set Expiry Date Set AutoDelete after receiver has read it reciepit notify (after the recipient has read the message, the sender gets a mail message telling him/her of that) END note: add support for Mail Signatures and tag them to the end of a message note: add support for a spell checker! :-) MAIL_WRITE END